home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SOLAR / Vector Generators / Energy Fields / fly-through next >
Lisp/Scheme  |  1998-10-23  |  2KB  |  30 lines

  1. fly-through space-name probe-type &rest dimension vectors
  2.  
  3. Lets you fly through a density space. In below you are flying through a space called 3dspace, which you define with make-density-space. The probe type is :linear, which means it just sums together the values in space-name pointed by the current dimension vector space coordinates.
  4.  
  5. Since the space is 3D space you need x, y and z vectors to represent the fly-through path.
  6.  
  7. (setq velocity-density
  8.   (vector-round 55 127
  9.      (fly-through 3dspace :linear
  10.               (vector-round 0 255 (gen-sin 0.1 1 256 -45)) ;x
  11.               (vector-round 0 255 (gen-sin 0.2 1 256 +45)) ;y
  12.               (vector-round 0 255 (gen-sin 0.3 1 256)))))  ;z
  13.  
  14. The result is scaled to range 55 .. 127 to build up values suitable for velocity control. The number of values returned is determined by the length of the fly-through path, and is here 256 samples. Each coordinate vector must naturally has the equal number of values.
  15.  
  16. Setting probe sensitivity
  17.  
  18. The probe sensitivity can be set to :linear, :sigmoid or :gaussian mode. Linear gives you values that are the linear sum of the space density values. Sigmoid resembles S-curve and gives compressed low and high reactions. Gaussian reacts best on the values in between and treats both low and high values as the same.
  19.  
  20. Making fly-through melodies
  21.  
  22. To make a melody use vector-to-symbol as in below.
  23.  
  24. (setq melody
  25.    (vector-to-symbol a z
  26.        (fly-through 3dspace :linear
  27.               (vector-round 0 255 (gen-sin 2 1 256 -45))
  28.               (vector-round 20 255 (gen-sin 2.2 1 256 +45))
  29.               (vector-round 40 255 (gen-sin 3.3 1 256)))))
  30.